package com.cory.admin.sys.domain.entity;

import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.cory.module.oplog.core.annotation.OpLogAttr;
import com.cory.module.oplog.core.annotation.OpLogObject;
import com.cory.module.oplog.core.handler.BuiltinTypeHandler;

/**
 * <p>
 * 登录用户信息表
 * </p>
 *
 * @author xc
 * @since 2019-02-23
 */
@Data
@OpLogObject(name="管理员", data="user_name")
public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户标记
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    
    /**
     * 租户id
     */
    private Integer tenantId;

    /**
     * 用户类型 
     */
    private Integer userType;

    /**
     * 关联对象id，根据user_type关联值
     */
    private Integer targetId;

    /**
     * 登录名
     */
    @OpLogAttr(name="登录名")
    private String loginName;

    /**
     * 登录密码
     */
    private String password;
    
    /**
     * 用户名
     */
    @OpLogAttr(name="名称")
    private String userName;

    /**
     * 手机号
     */
    @OpLogAttr(name="手机号")
    private String mobile;
    
    /**
     * 头像
     */
    @OpLogAttr(name="头像", builtinType=BuiltinTypeHandler.IMAGE)
    private String logo;
    
    /**
     * 部门编码
     */
    @OpLogAttr(name="部门", builtinType=BuiltinTypeHandler.FOREIGN, foreignTable="sys_dept", foreignTableKey="code")
    private String deptCode;
    
    /**
     * 职位
     */
    private String position;

    /**
     * 1启用，2禁用，9删除
     */
    private Integer state;
    
    /**
     * 是否超级管理员 1：是，2：否
     */
    private Integer superFlag;

    /**
     * 新增人员
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;

    /**
     * 新增时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 最近修改人员
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer modifyUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime modifyTime;

    /**
     * 备注
     */
    private String remarks;

    @Override
    public String toString() {
        return "SysUser{" +
        "id=" + id +
        ", userType=" + userType +
        ", loginName=" + loginName +
        ", password=" + password +
        ", state=" + state +
        ", remarks=" + remarks +
        "}";
    }
    
}
